package 常用类.Array类.list.List项目;

import java.util.ArrayList;
import java.util.List;

public class ProductOperate {
    //productList用于储存商品
    private List<Product> productList=new ArrayList<>();

    public void addProduct(Product product) throws Exception {
        if (product==null){
         throw new Exception("商品不允许为空");
        }
        //1.检测要添加的商品是否存在,根据商品编号查看商品
        //2.如果不存在，则新增商品
        //3.如果存在则修改库存量
        Product product1=this.getProductById(product.getProId());
        if (product1!=null){
            this.updateProductNum(product.getProId(),product.getProNum(),true);
            return;//不再执行其后的内容，直接退出方法
        }
        productList.add(product);
    }

    //根据商品编号获得商品
    public Product getProductById(int productId){
        for (Product product:productList){
            if (product.getProId().equals(productId)){
                return product;
            }
        }
        return null;
    }

    //删除商品
    public void deleteProduct(Product product) throws Exception {
        if (product==null){
            throw new Exception("商品不存在，无法删除");
        }
        productList.remove(product);
    }

    //修改库存量
    public void updateProductNum(int productId,int productNum,boolean isAdd) throws Exception {
        Product product=this.getProductById(productId);
        if (product!=null){
            if (isAdd){//新增
                product.setProNum(product.getProNum()+productNum);
                return;
            }
            //减少
            product.setProNum(product.getProNum()-productNum);
            //判断库存量是否为0，如果为0则删除该商品
            if (product.getProNum()==0){
                this.deleteProduct(product);
                System.out.println("库存量为0，商品已清除");
            }
            return;
        }
        throw new Exception("商品不存在");
    }
    public void AllProduct(){
        System.out.println("==========库存清单==========");
        System.out.println("商品编号\t商品名称\t商品尺寸\t商品价格\t库存量");
        for (Product product:productList){
            System.out.println(product.getProId()+"\t"+product.getProName()+"\t"+ productList.size()+"\t"+ product.getProPrice()+"\t"+ product.getProNum());
        }
    }
}
